package com.airy.apprepairequipment.controller;

import com.airy.apprepairequipment.common.util.ObjectUtils;
import com.airy.apprepairequipment.common.utils.PageUtils;
import com.airy.apprepairequipment.common.utils.R;
import com.airy.apprepairequipment.entity.RecJdloopgroupEntity;
import com.airy.apprepairequipment.entity.RtJdloopgroupEntity;
import com.airy.apprepairequipment.entity.SdevLoopgroupEntity;
import com.airy.apprepairequipment.service.SdevLoopgroupService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

/**
 * 线圈组
 *
 * @author dingyakun
 * @email 821041490@qq.com
 * @date 2020-11-16 12:24:43
 */
@RestController
@RequestMapping("product/sdevloopgroup")
public class SdevLoopgroupController {

    @Autowired
    private SdevLoopgroupService sdevLoopgroupService;

    @Autowired
    private RtJdloopgroupController rtJdloopgroupController;

    @Autowired
    private RecJdloopgroupController recJdloopgroupController;

    /**
     * 交调
     * 根据fstrDevicedid查询车道的fstrLoopgroupid以及车道号FSTR_LANESECTID
     * 信息
     */
    @RequestMapping("/findJiaodiao/{fstrDeviceid}")
    public R getJiaoDiaoByfstrDeviceid(@PathVariable("fstrDeviceid") String fstrDeviceid, @RequestBody Map<Integer, RtJdloopgroupEntity> hashMap) throws IOException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, ParseException {
        //目的是获取groupId和lanesectid(车道号)
        List<SdevLoopgroupEntity> sdevLoopgroupEntityList = sdevLoopgroupService.getByfstrDeviceid(fstrDeviceid);

        //遍历map集合，里面保存的是key是车道号，value是rt对象，测试传过来的map集合对象
        for (Integer in : hashMap.keySet()) {
            //map.keySet()返回的是所有key的值
            RtJdloopgroupEntity rtJdloopgroupEntity = hashMap.get(in);//得到每个key多对用value的值
//            System.out.println(hashMap.get(in));
        }

        //遍历传过来的list集合，里面存放的是rt对象
        for (int i = 0; i < sdevLoopgroupEntityList.size(); i++) {
            //获取车道号
            String fstrLanesectid = sdevLoopgroupEntityList.get(i).getFstrLanesectid();
            //主键Id
            String fstrLoopgroupid = sdevLoopgroupEntityList.get(i).getFstrLoopgroupid();
            //查到的，根据主键Id去RT表查找RtJdloopgroupEntity;
            RtJdloopgroupEntity rtJdloopgroupEntity = rtJdloopgroupController.selectByFstrLoopgroupid(fstrLoopgroupid);

            /*SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    //格式化规则
            String strDate = sdf.format(new Date()); //获得你要处理的时间 Date型,格式化成yyyy-MM-dd HH:mm:ss格式的时间字符串
            Date newDate = sdf.parse(strDate);
            //保留时分秒。如果只要年月日，将Timestamp换成Date
            java.sql.Timestamp resultDate = new java.sql.Timestamp(newDate.getTime());*/

            //遍历Map集合然后根据map集合的key与fstrLanesectid进行对比，然后获取车道号
            for (Map.Entry<Integer, RtJdloopgroupEntity> entry : hashMap.entrySet()) {
                if (entry.getKey() == Integer.parseInt(fstrLanesectid)) {
                    //传过来的数据，根据车道号获取传过来的RT对象
                    RtJdloopgroupEntity rtentity = hashMap.get(Integer.parseInt(fstrLanesectid));

                    //重新设置车道号，将传过来的车道号变更为真正的车道号
                    rtentity.setFstrLoopgroupid(fstrLoopgroupid);
                    //如果为空。直接插入
                    if (ObjectUtils.isEmpty(rtJdloopgroupEntity)) {
                        //将rt进行添加
                        rtJdloopgroupController.insertRT(rtentity);
                        System.out.println(rtentity.getFstrLoopgroupid() + "插入成功");
                    } else {
                        RecJdloopgroupEntity recentity = new RecJdloopgroupEntity();
                        //复制属性，rt复制给rec
                        BeanUtils.copyProperties(rtJdloopgroupEntity, recentity);
                        //将rec进行添加
                        recJdloopgroupController.insertREC(recentity);
                        System.out.println(recentity.getFstrLoopgroupid() + "插入成功");
                        //将rt进行更新
                        rtJdloopgroupController.update(rtentity);
                        System.out.println(rtentity.getFstrLoopgroupid() + "更新成功");
                    }
                }
            }
        }
        return R.ok();
    }

    /**
     * 微波
     * 根据fstrDevicedid查询车道的fstrLoopgroupid以及车道号FSTR_LANESECTID
     * 信息
     */
    @RequestMapping("/findWeiBo/{fstrDeviceid}")
    public R getWeiBoByfstrDeviceid(@PathVariable("fstrDeviceid") String fstrDeviceid, @RequestBody Map<Integer, RtJdloopgroupEntity> hashMap) throws IOException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, ParseException {
        //目的是获取groupId和lanesectid(车道号)
        List<SdevLoopgroupEntity> sdevLoopgroupEntityList = sdevLoopgroupService.getByfstrDeviceid(fstrDeviceid);

        //数据库中配置的车道数量，根据数据库中的车道数量进行获取传过来的数据
        for (int i = 1; i <= sdevLoopgroupEntityList.size(); i++) {
            String fstrLoopgroupid = sdevLoopgroupEntityList.get(i - 1).getFstrLoopgroupid();
            RtJdloopgroupEntity rtJdloopgroupEntity = hashMap.get(i);
            rtJdloopgroupEntity.setFstrLoopgroupid(fstrLoopgroupid);//真正的id
            System.out.println(rtJdloopgroupEntity);

            //查到的，根据主键Id去RT表查找RtJdloopgroupEntity;
            RtJdloopgroupEntity findrtJdloopgroupEntity = rtJdloopgroupController.selectByFstrLoopgroupid(fstrLoopgroupid);
            //如果为空。直接插入
            if (ObjectUtils.isEmpty(findrtJdloopgroupEntity)) {
                rtJdloopgroupController.insertWeiBoRT(rtJdloopgroupEntity);
                System.out.println(rtJdloopgroupEntity.getFstrLoopgroupid() + "插入RT成功");
            } else {
                RecJdloopgroupEntity recentity = new RecJdloopgroupEntity();
                BeanUtils.copyProperties(rtJdloopgroupEntity, recentity);
                recJdloopgroupController.inserWeiBotREC(recentity);
                System.out.println(recentity.getFstrLoopgroupid() + "插入REC成功");
                rtJdloopgroupController.update(rtJdloopgroupEntity);
                System.out.println(rtJdloopgroupEntity.getFstrLoopgroupid() + "更新RT成功");
            }
        }

        for (Integer in : hashMap.keySet()) {
            //map.keySet()返回的是所有key的值
            RtJdloopgroupEntity rtJdloopgroupEntity = hashMap.get(in);//得到每个key多对用value的值
//            System.out.println(hashMap.get(in));
        }

        return R.ok();
    }

    /**
     * 列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params) {
        PageUtils page = sdevLoopgroupService.queryPage(params);

        return R.ok().put("page", page);
    }


    /**
     * 信息
     */
    @RequestMapping("/info/{fstrLoopgroupid}")
    public R info(@PathVariable("fstrLoopgroupid") String fstrLoopgroupid) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
        SdevLoopgroupEntity sdevLoopgroup = sdevLoopgroupService.getById(fstrLoopgroupid);

        return R.ok().put("sdevLoopgroup", sdevLoopgroup);
    }

    /**
     * 保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody SdevLoopgroupEntity sdevLoopgroup) {
        sdevLoopgroupService.save(sdevLoopgroup);

        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody SdevLoopgroupEntity sdevLoopgroup) {
        sdevLoopgroupService.updateById(sdevLoopgroup);

        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody String[] fstrLoopgroupids) {
        sdevLoopgroupService.removeByIds(Arrays.asList(fstrLoopgroupids));

        return R.ok();
    }

}
